/*
 * CcDecl.h
 *
 *  Created on: 2012/04/28
 *      Author: guanxiaoying
 */

#ifndef CCDECL_H_
#define CCDECL_H_


/*　結合種類　*/
#define LINKAGE_EXTERN		KIND_GBLLINKAGE
#define LINKAGE_INNER    	KIND_LINKAGE
#define LINKAGE_NONE     	0

/*  KIND_TYPESPECIFIER  宣言指定子列情報テーブル */
/* 置換要素並びの型指令子の種類 */
#define TYPEDEF_BASE			1
#define TYPEDEF_STRUCT			2
#define TYPEDEF_UNION			3
#define TYPEDEF_TYPEDEF			4
#define TYPEDEF_ENUM			5

/* KIND_DECLARATOR	宣言子情報テーブル  */
#define DECLARATOR_POINTER   1
#define DECLARATOR_ARRAY     2
#define DECLARATOR_INIT      3
#define DECLARATOR_FUNC      4
#define DECLARATOR_SYM       5
#define DECLARATOR_PAREN     6
#define DECLARATOR_OTHER     7
#define DECLARATOR_BITFIELD     DECLARATOR_OTHER

#define xDECLARATOR_POINTER   DECLARATOR_POINTER
#define xDECLARATOR_ARRAY     DECLARATOR_ARRAY
#define xDECLARATOR_INIT      DECLARATOR_INIT
#define xDECLARATOR_FUNC      DECLARATOR_FUNC
#define xDECLARATOR_SYM       DECLARATOR_SYM
#define xDECLARATOR_PAREN     DECLARATOR_PAREN
#define xDECLARATOR_OTHER     DECLARATOR_OTHER
#define xDECLARATOR_BITFIELD     DECLARATOR_OTHER

VOID  CcDeclInit(VOID) ;
AST  CcDeclGetSymfromDec( AST astDeclarator );
BOOL CcDeclChkType(AST);
BOOL CcDeclIsDeclaration( VOID );
AST CcDeclaration( UCHAR ucNameSpace );
AST  CcDeclarationList( VOID );
AST  CcDeclGetTypeInfo( AST  astDeclaration );
#endif /* CCDECL_H_ */
